﻿using System;

namespace Borg
{
    [Serializable]
    public abstract class Qualifiable : MetaElement
    {
        private QualificationState _qualificationState;

        public QualificationState QualificationState
        {
            get { return _qualificationState; }
            internal set { _qualificationState = value; }
        }

        public abstract bool IsQualified { get; }

        public bool IsQualificationMissing
        {
            get { return Qualifier.InternalIsQualificationMissing(this); }
        }

        protected Qualifiable(int id, string name)
            : base(id, name)
        {
            QualificationState = QualificationState.QualificationMissing;
        }

        public abstract bool Qualify();
    }
}
